package everydayone.isSymmetric;

import twobranchTree.preorderTraversal.TreeNode;

/**
 * @date 2020/05/31
 * @author 王光浩
 * @Thinking 使用递归方式，对这颗树以及这棵树的镜像对称数进行前序遍历，如果每一个节点的都相等，则返回 true，否则返回
 * 			 false。
 * @Analysis 时间复杂度O（n），空间复杂度O（H） 
 */
public class MyMethodOne {
	
	private boolean help = true;

	public boolean isSymmetric(TreeNode root) {
		recursively(root.left,root.right);
		return help;
	}
	
	/**
	 * 递归方法
	 * @param left
	 * @param right
	 */
	private void recursively(TreeNode left, TreeNode right) {
		//basic case
		if (help == false)
			return;
		if (left == null || right == null) {
			if (left != right) 
				help = false;
			return;
		}
		if (left.val != right.val) {
			help = false;
			return;
		}
		//迭代体
		recursively(left.left, right.right);
		recursively(left.right,right.left);
	}
}
